View

Object Hierarchy | 関連する C++クラス:View

継承

SIObject

UIObject

UIPersistable

ビュー

導入

v4.0

詳細

Viewオブジェクトは、Softimage におけるビューのインスタンスです。ほとんどのウィンドウが、Viewオブジェクトとしてのフリーフローティングウィンドウと同じように、現在のLayoutに埋め込まれています。

Softimage には、Netview、Script Editor、Render Tree、Explorer などを含む多くのタイプのビルドインビューがあります。ツールバーとシェルフも、ビューのタイプです(Softimage の初期バージョンで作成されたツールバーは例外です)。また、Relational Viewは 1 つのビューウィンドウ内に他のビュータイプを組み合わせたビューです。

プロパティページウィンドウ(PPGオブジェクトを参照)は、View のタイプではありませんが、次の例に示すように"Property Panel"のビュータイプに埋め込むことができます。

また、View オブジェクトを使用すると、Layout.Viewsからビューマネージャのインスタンスを作成し、View Manager AttributesView.SetAttributeValueを使用してカスタマイズすることで、4 つの Softimage ビューポートを操作できます。

ビューはLayout.Viewsメソッド(またはリレーショナルビューの場合はView.Viewsメソッド)からアクセスできます。フリーフローティングウィンドウ内でViewオブジェクトをインスタンス化するには、Layout.CreateViewを呼び出します。

ビュー オブジェクトでは以下の操作が可能です:

- 閉じた状態や最小化した状態などに、ビュー状態を変更します。

- ビューの位置とサイズを変更します。

- ビューを表示したり非表示にしたりします。

- Explorer のスコープや NetView の URL などの特定のビュー属性にアクセスできます。

- UI がちらつくのを避けるために、ビュー属性を一度に編集できます。

- リレーショナルビューのサブビューを全体にわたって繰り返します。

これらのタスクの中には、ビュー オブジェクト(View.MoveView.ResizeView.Visible など)に実装された方法を使用して実行可能なものがあります。ただし、changing the scope and selection in the Explorermaximizing a single viewport window などの専門化したタスクは、View.SetAttributeValueView.GetAttributeValue メソッドでのみ実現可能です。異なるビューに対して利用可能な属性の一覧については、「View Attributes Reference」を参照してください。

メソッド

BeginEdit EndEdit FindView GetAttributeValue
IsClassOfオペレータ IsEqualToオペレータ Move Rearrange
Refresh Resize SetAttributeValue  
       

プロパティ

Application Categories Floating FullNameオペレータ
Help MemoCameras Nameオペレータ NestedObjects
Origin OriginPath Parent Rectangle
State Typeオペレータ Views Visible

1. JScript の例

/*
        This example restores and cascades all floating views excepted 
        the script editor.
*/
// Create some sample views 
var layout = Desktop.ActiveLayout;
layout.CreateView( "Explorer", "My Explorer" );
layout.CreateView( "Browser", "My Browser" );
layout.CreateView( "NetView", "My NetView" );
// Position for the first view to cascade
px = 50
py = 20
// Delta between each view
dx = 20
dy = 20
var views = layout.Views;
for( var i=0; i<views.Count; i++) {
        var vw = views(i);
        if( vw.Floating && vw.Name != "script_editor") {
                vw.Move( px, py );
                px += dx;
                py += dy
                vw.State = siNormal; // put view at the top so far
        }
}

2. Python の例

# Set up a few basics
from win32com.client import constants as c
import os.path 
app = Application
false = 0
true = 1
null = None
# Convenience function to create a simple synoptic page on disk
def MakeSynViewPages() :
        mysynviewpath = XSIUtils.BuildPath(
                app.InstallationPath(c.siFactoryPath),
                "Data", "XSI_SAMPLES", "Synoptic"
        )
        file1 = XSIUtils.BuildPath(mysynviewpath, "SynViewStartWith.htm")
        file2 = XSIUtils.BuildPath(mysynviewpath, "SynViewSwitchTo.htm")
        f = open(file1, 'w')
        f.write("<html>\n<body version=\"2\">\n<script language=\"VBScript\">\n\n")
        f.write("sub hotspot(in_obj,in_mousebutton,in_keymodifier)\nset self = GetValue(i")
        f.write("n_obj)\nApplication.LogMessage \"VB: Touched \" & self.FullName & \" at \" _")
        f.write("\n\t& self.posx.Value & \",\" & self.posy.Value _\n\t& \",\" & self.posz")
        f.write(".Value & \" (x,y,z)\"\nend sub\n</SCRIPT>\n\n<map name=\"SynopticMap\">\n")
        f.write("<area shape=\"circle\" coords=\"260,251,129\" title=\"\" NOHREF onClick=")
        f.write("\"hotspot\">\n</map>\n\n<img src=\"..\\pictures\\xsilogo.jpg\" usemap=\"#S")
        f.write("ynopticMap\">\n\n</body>\n</html>")
        f = open(file2, 'w')
        f.write("<html>\n<body version=\"2\">\n<script language=\"JavaScript\">\n")
        f.write("\nfunction hotspot(in_obj,in_mousebutton,in_keymodifier)\n{\nvar self = G")
        f.write("etValue(in_obj);\nApplication.LogMessage( \"JS: Touched \" + self.FullName + ")
        f.write("\" at \" \n\t+ self.posx.Value + \",\" + self.posy.Value \n\t+ \",\" + ")
        f.write("self.posz.Value + \" (x,y,z)\" );\n}\n</SCRIPT>\n\n<map name=\"SynopticMap")
        f.write("\">\n<area shape=\"circle\" coords=\"260,251,129\" title=\"\" NOHREF onCli")
        f.write("ck=\"hotspot\">\n</map>\n\n<img src=\"..\\pictures\\xsilogo.jpg\" usemap=")
        f.write("\"#SynopticMap\">\n\n</body>\n</html>")
        return [file1, file2]
# Create a synoptic property and attach it to a torus
app.NewScene("", false)
torus = app.CreatePrim("Torus", "MeshSurface")
app.Rotate(torus, 90, 0, 0, c.siAbsolute, c.siPivot, c.siObj, c.siX)
app.Translate(torus, 4, 3, 2, c.siAbsolute, c.siPivot, c.siObj, c.siZ)
synfiles = MakeSynViewPages()
applied = torus.AddProperty("Synoptic Property") 
applied.Parameters(1).Value = "SynViewAttrib"
applied.Parameters(2).Value = synfiles[0]
app.OpenAttachments()
# Open the Synoptic viewer
lay = app.Desktop.ActiveLayout
vw = lay.Views("Synoptic View")
vw.SetAttributeValue("path", synfiles[1]+","+torus.Name)

3. JScript の例

/*
        This example demonstrates how we can host a Custom Property 
        inside a View.  
        This has some advantages over the InspectObj command:
        -we can specify the exact size and positioning of the window
        -the view is exposed in the Layout.Views collection so we can
        find out if the property page is already being "inspected".
        However it does not support the "Modal" mode supported by
        InspectObj.
*/
// Step 1: Create the custom property
var oPSet = ActiveSceneRoot.AddProperty( "CustomProperty", false, "MyProp" );
oPSet.AddParameter3( "textparam", siString ) ;
oPSet.AddFCurveParameter( "MyFCurve" ) ;
var oLayout = oPSet.PPGLayout ;
oLayout.Clear() ;
oLayout.AddItem( "textparam" );
oLayout.AddItem( "MyFCurve" );
oLayout.AddRow()
oLayout.AddButton( "MoveView", "Move View" ) ;
oLayout.AddButton( "Close" ) ;
oLayout.EndRow()
oLayout.Language = "JScript"
oLayout.Logic = MoveView_OnClicked.toString()
        + Close_OnClicked.toString() ;
// Step 2: Show the custom property in a view
var oActiveLayout = Application.Desktop.ActiveLayout;
var oNewView = oActiveLayout.CreateView( "Property Panel", "MyPropView" );
oNewView.BeginEdit();
oNewView.Move( 10, 10 );
oNewView.Resize( 340, 340 );
oNewView.SetAttributeValue( "targetcontent", oPSet.FullName );
oNewView.EndEdit();
// Logic code used by the buttons on the Custom Property
function MoveView_OnClicked()
{
        // We can't get to the view directly from the PPG object,
        // but we can find it indirectly by searching through
        // the open views
        var thisCustomProp = PPG.Inspected.Item(0).FullName
        var oActiveLayout = Application.Desktop.ActiveLayout
        for ( var i = 0 ; i < oActiveLayout.Views.Count ; i++ ) {
                var oView = oActiveLayout.Views(i) ;
                if ( oView.Type == "Property Panel" ) {
                        if ( oView.GetAttributeValue("targetcontent") == thisCustomProp ) {
                                // found it!            
                                oView.Move( 250, 250 ) ;
                                return ;
                        }
                }
        }
}
function Close_OnClicked()
{
        // Self destruction of the custom property
        DeleteObj( PPG.Inspected.Item(0) ) ;
        PPG.Close() ;
}

4. JScript の例

// Open an Animation Editor and show the FCurves on
// a custom property
var oPSet = ActiveSceneRoot.AddProperty("CustomProperty",false,"Demo" ) ;
var oParam = oPSet.AddParameter3( "Value", siDouble, 0, 0, 100 ) ;
var oParam2 = oPSet.AddParameter3( "Value", siDouble, 0, 0, 100 ) ;
oParam.AddFCurve2( 
        new Array( 1, 0,
                25, 50,
                50, 25,
                100, 100 
        ) 
) ;
oParam2.AddFCurve2( 
        new Array( 1, 100,
                25, 25,
                50, 50,
                100, 100 
        ) 
) ;
var oLayout = Desktop.ActiveLayout;
var oView = oLayout.CreateView( "Animation Editor", "MyFCurves" );
oView.SetAttributeValue( "TargetContent", oPSet.FullName ) ;

関連項目

View Attributes Reference Layout.Views View.Views